package com.shuda.business.crm.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 客户跟进查询DTO类
 * 提供查询条件：客户ID、跟进方式、跟进状态、分配用户、开始/结束时间
 */
@Schema(name = "CustomerFollowUpQueryDTO", description = "客户跟进查询DTO")
public class CustomerFollowUpQueryDTO {

    @Schema(description = "客户ID")
    private Long customerId;

    @Schema(description = "跟进方式(phone-电话,visit-拜访,email-邮件,wechat-微信,qq-QQ)")
    private String followUpType;

    @Schema(description = "跟进状态(pending-待跟进,completed-已完成,cancelled-已取消)")
    private String followUpStatus;

    @Schema(description = "分配用户ID")
    private Long assignedUserId;

    @Schema(description = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    @Schema(description = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 获取客户ID
     * @return 客户ID
     */
    public Long getCustomerId() {
        return customerId;
    }

    /**
     * 设置客户ID
     * @param customerId 客户ID
     */
    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    /**
     * 获取跟进方式
     * @return 跟进方式
     */
    public String getFollowUpType() {
        return followUpType;
    }

    /**
     * 设置跟进方式
     * @param followUpType 跟进方式
     */
    public void setFollowUpType(String followUpType) {
        this.followUpType = followUpType;
    }

    /**
     * 获取跟进状态
     * @return 跟进状态
     */
    public String getFollowUpStatus() {
        return followUpStatus;
    }

    /**
     * 设置跟进状态
     * @param followUpStatus 跟进状态
     */
    public void setFollowUpStatus(String followUpStatus) {
        this.followUpStatus = followUpStatus;
    }

    /**
     * 获取分配用户ID
     * @return 分配用户ID
     */
    public Long getAssignedUserId() {
        return assignedUserId;
    }

    /**
     * 设置分配用户ID
     * @param assignedUserId 分配用户ID
     */
    public void setAssignedUserId(Long assignedUserId) {
        this.assignedUserId = assignedUserId;
    }

    /**
     * 获取开始时间
     * @return 开始时间
     */
    public LocalDateTime getStartTime() {
        return startTime;
    }

    /**
     * 设置开始时间
     * @param startTime 开始时间
     */
    public void setStartTime(LocalDateTime startTime) {
        this.startTime = startTime;
    }

    /**
     * 获取结束时间
     * @return 结束时间
     */
    public LocalDateTime getEndTime() {
        return endTime;
    }

    /**
     * 设置结束时间
     * @param endTime 结束时间
     */
    public void setEndTime(LocalDateTime endTime) {
        this.endTime = endTime;
    }
}